<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of SolicitudesController
 *
 * @author piero
 */
class SolicitudesController extends AppController {

    public $name = 'Solicitudes';
    public $helpers = array('Html', 'Form');
    public $components = array('Session');
    public $paginate = array('limit' => 10, 'order' => array('Solicitud.id' => 'DESC'));
    private $user;
    private $empleado;

    public function beforeFilter() {
        parent::beforeFilter();
        $this->loadModel('Solicitud');
        $this->loadModel('Empleado');
        $this->user = $this->Auth->user();
        $this->empleado = $this->Empleado->findByUsuarioId($this->user['id']);
        $this->set('empleado', $this->empleado);
    }

    public function index() {
        $this->refrescarListaSolicitudes();
    }
    
    public function pendientes() {
        $this->filtrarSolicitudesPorEstado(SOLICITUD_ESTADO_PENDIENTE);
    }
    
    public function aprobadas() {
        $this->filtrarSolicitudesPorEstado(SOLICITUD_ESTADO_APROBADO);
    }
    
    public function rechazadas() {
        $this->filtrarSolicitudesPorEstado(SOLICITUD_ESTADO_RECHAZADO);
    }

    public function solicitarModificacion($documentoId) {
        $this->Solicitud->agregar($tipo = SOLICITUD_TIPO_MODIFICACION, $estado = SOLICITUD_ESTADO_PENDIENTE, $justificacion = 'Sin comentarios', $documentoId = $documentoId, $empleadoId = $this->empleado['Empleado']['id']);
        $this->refrescarListaSolicitudes();
        $this->view = 'index';
    }
    
    public function solicitarNuevamente($idSolicitud) {
        $this->Solicitud->actualizar($idSolicitud);
        $this->refrescarListaSolicitudes();
        $this->view = 'index';
    }

    public function solicitarConsulta($documentoId) {
        $this->Solicitud->agregar($tipo = SOLICITUD_TIPO_CONSULTA, $estado = SOLICITUD_ESTADO_PENDIENTE, $justificacion = 'Sin comentarios', $documentoId = $documentoId, $empleadoId = $this->empleado['Empleado']['id']);
        $this->refrescarListaSolicitudes();
        $this->view = 'index';
    }

    public function aprobar($solicitudId) {
        $this->Solicitud->aprobar($solicitudId);
        $this->refrescarListaSolicitudes();
        $this->view = 'index';
    }
    
    public function rechazar($solicitudId) {
        $this->Solicitud->rechazar($solicitudId);
        $this->refrescarListaSolicitudes();
        $this->view = 'index';
    }
    
    
    public function filtrar($tipo){
        
        $data = $this->Solicitud->findAllByTipo($tipo, array('id'));

        $data = $this->paginate('Solicitud');
        $this->set('solicitudes', $data);
         $this->view = 'index';
    }
    

    private function refrescarListaSolicitudes() {
        $data = $this->Solicitud->find('all');
        $data = $this->paginate('Solicitud');
        $this->set('solicitudes', $data);
    }
    
    private function filtrarSolicitudesPorEstado($estado) {
       
        $parametrosDeBusqueda = array(
                    'conditions' => array('Solicitud.estado' => $estado),
                    'order' => array('Solicitud.id DESC')
                );
                

           $data = $this->Solicitud->find('all', $parametrosDeBusqueda );
       
        $this->paginate = array(
                'conditions' => array('Solicitud.estado' => $estado),
                'limit' => 10
            );
        
        $data = $this->paginate('Solicitud');
        
        
        $this->set('solicitudes', $data);
    }
    
    

    public function descargar($idSolicitud) {
        $this->viewClass = 'Media';
        $solicitud = $this->Solicitud->findById($idSolicitud);
        $params = array(
            'id' => $solicitud['Documento']['archivo'],
            'name' => $solicitud['Documento']['nombre'],
            'download' => true,
            'extension' => '.docx',
            'path' => DIRECTORIO_DE_ARCHIVOS
        );
        $this->set($params);
    }

    public function actualizarArchivo($idSolicitud) {
        $this->loadModel('Documento');
        $solicitud = $this->Solicitud->findById($idSolicitud);


        $archivo = $this->request->data;

        $archivo['Solicitudes']['archivo']['name'] = $solicitud['Documento']['archivo'];


        $archivoSubido = $this->Documento->subirArchivo(
                $archivo = $archivo['Solicitudes']['archivo'], $directorio = DIRECTORIO_DE_ARCHIVOS);

        if ($archivoSubido) {
            $this->Solicitud->actualizarEstado($idSolicitud, SOLICITUD_ESTADO_MODIFICACION_COMPLETA);
        }


        $this->refrescarListaSolicitudes();
        $this->view = 'index';
    }

}

?>
